Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lib/types: add types.pathNotInStore #373287

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft

Conversation

jfly
Copy link
Contributor

@jfly jfly commented Jan 12, 2025

This option parallels our existing types.pathInStore type. This is
useful for when a module needs a path to a file, and wants to protect
people from accidentally leaking that file into the nix store.

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

Add a 👍 reaction to pull requests you find important.

@github-actions github-actions bot added 6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: module (update) This PR changes an existing module in `nixos/` 6.topic: module system About "NixOS" module system internals 6.topic: lib The Nixpkgs function library labels Jan 12, 2025
@roberth
Copy link
Member

roberth commented Jan 14, 2025

Seems like a good idea, although the idea seems similar to an earlier PR. Maybe @infinisil knows the status of that?

I think you'll want isString, because isStringLike also accepts path values, which are added to the store when interpolated.
Supporting derivations also doesn't seem right for a type like this.

I think in many cases, users of the type will want not just path strings, but absolute path strings.
It seems that we're in the process of creating a messy api with many distinct type names for unclear use cases. Perhaps it'd be better to do something like this?

pathWith { store = false; absolute = true; }

I'd like a more compositional style (e.g. set-like operations on types), but I'm not sure that it's actually nicer for users. Probably the type description - ie docs - would suffer as well.

This option parallels our existing `types.pathInStore` type. This is
useful for when a module needs a path to a file, and wants to protect
people from accidentally leaking that file into the nix store.
@jfly jfly force-pushed the add-pathNotInStore branch from c377630 to db879dc Compare January 15, 2025 04:21
@jfly
Copy link
Contributor Author

jfly commented Jan 15, 2025

I think you'll want isString, because isStringLike also accepts path values, which are added to the store when interpolated.

Fair, changed.

I think in many cases, users of the type will want not just path strings, but absolute path strings.

Yeah, you'll see I am checking if the first character is a /. Agreed that this is messy/unclear.

Perhaps it'd be better to do something like this?

pathWith { store = false; absolute = true; }

I like that. Happy to implement that, but first I'll wait to hear back from @infinisil about the status of the earlier PR you referenced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6.topic: lib The Nixpkgs function library 6.topic: module system About "NixOS" module system internals 6.topic: nixos Issues or PRs affecting NixOS modules, or package usability issues specific to NixOS 8.has: module (update) This PR changes an existing module in `nixos/` 10.rebuild-darwin: 1-10 10.rebuild-linux: 1-10
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants